GETTING STARTED
- Install celery by download or
pip install -U Celery
- Set up RabbitMQ, Redis or one of the other supported brokers
- Select one of the following guides:
EASY TO INTEGRATE
Celery is easy to integrate with web frameworks, some of which even have integration packages.
Celery is written in Python, but the protocol can be implemented in any language. It can also operate with other languages using webhooks.
使用Celery的常見場景如下:
1. Web應用。當用戶觸發的一個操作需要較長時間才能執行完成時,可以把它作為任務交給Celery去異步執行,執行完再返回給用戶。這段時間用戶不需要等待,提高了網站的整體吞吐量和響應時間。
2. 定時任務。生產環境經常會跑一些定時任務。假如你有上千台的服務器、上千種任務,定時任務的管理很困難,Celery可以幫助我們快速在不同的機器設定不同種任務。
3. 同步完成的附加工作都可以異步完成。比如發送短信/郵件、推送消息、清理/設置緩存等。
Celery還提供瞭如下的特性:
1. 方便地查看定時任務的執行情況,比如執行是否成功、當前狀態、執行任務花費的時間等。
2. 可以使用功能齊備的管理後台或者命令行添加、更新、刪除任務。
3. 方便把任務和配置管理相關聯。
4. 可選多進程、Eventlet和Gevent三種模式並發執行。
5. 提供錯誤處理機制。
- 提供多種任務原語,方便實現任務分組、拆分和調用鏈。
- 支持多種消息代理和存儲後端。
Celery的架構
Celery包含如下組件:
1. Celery Beat:任務調度器,Beat進程會讀取配置文件的內容,週期性地將配置中到期需要執行的任務發送給任務隊列。
2. Celery Worker:執行任務的消費者,通常會在多台服務器運行多個消費者來提高執行效率。
3. Broker:消息代理,或者叫作消息中間件,接受任務生產者發送過來的任務消息,存進隊列再按序分發給任務消費方(通常是消息隊列或者數據庫)。
4. Producer:調用了Celery提供的API、函數或者裝飾器而產生任務並交給任務隊列處理的都是任務生產者。
5. Result Backend:任務處理完後保存狀態信息和結果,以供查詢。Celery默認已支持Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy等方式。